﻿Imports Microsoft.DirectX
Imports Microsoft.DirectX.Direct3D
''' <summary>
''' Stellt Grafiken zur Zeichnung von Buchstaben zur verfügung.
''' </summary>
''' <remarks></remarks>
Public NotInheritable Class ObjektAlphabet
    Public Const BuchstabenHöhe As Integer = 32
    Public Const BuchstabenBreite As Integer = 16
    Public Const BuchstabenHöheKlein As Integer = 16
    Public Const BuchstabenBreiteKlein As Integer = 8
    Shared Alphabete(2) As Texture
    Enum Alphabet
        A
        B
        C
        D
        E
        F
        G
        H
        I
        J
        K
        L
        M
        N
        O
        P
        Q
        R
        S
        T
        U
        V
        W
        X
        Y
        Z
        Null
        Eins
        Zwei
        Drei
        Vier
        Fünf
        Sechs
        Sieben
        Acht
        Neun
        Ä
        Ö
        Ü
        Schreckstrich
        Prozent
        Bindestrich
    End Enum
    Public Sub New()
    End Sub
    Public Shared Sub LoadAlphabete()
        Alphabete(0) = Grafikengine.LoadTexture(My.Settings.Resourcenpfad + "Alphabete\AlphabetStandard.png")
        Alphabete(1) = Grafikengine.LoadTexture(My.Settings.Resourcenpfad + "Alphabete\AlphabetStandardKleiner.png")
        Alphabete(2) = Grafikengine.LoadTexture(My.Settings.Resourcenpfad + "Alphabete\AlphabetStandardGroß.png")
    End Sub
    Public Shared Sub DrawBuchstabe(ByVal Buchstabe As Char, ByVal Größe As Single, ByVal P As Point, ByVal Alphabet As Integer)
        Dim sngrotation As Single = 0
        Dim intcolor As Color = Color.FromArgb(255, 255, 255, 255)
        Dim BuchstabenBreite As Integer = 0
        Dim BuchstabenHöhe As Integer = 0
        Select Case Alphabet
            Case 1
                BuchstabenBreite = ObjektAlphabet.BuchstabenBreiteKlein
                BuchstabenHöhe = ObjektAlphabet.BuchstabenHöheKlein
            Case 2
                BuchstabenBreite = ObjektAlphabet.BuchstabenBreite * 2
                BuchstabenHöhe = ObjektAlphabet.BuchstabenHöhe * 2
            Case Else
                BuchstabenBreite = ObjektAlphabet.BuchstabenBreite
                BuchstabenHöhe = ObjektAlphabet.BuchstabenHöhe
        End Select
        Grafikengine.szfScale = New Size(BuchstabenBreite * Größe, BuchstabenHöhe * Größe)
        Grafikengine.ptfRotCenter = New Point
        Dim NichtGefunden As Boolean = False
        If Buchstabe = " " Then NichtGefunden = True
        Dim Buchstaben As Alphabet = 0
        If Char.IsNumber(Buchstabe) Then
            Dim Z As Integer = CInt(Val(Buchstabe))
            Select Case Z
                Case 0
                    Buchstaben = ObjektAlphabet.Alphabet.Null
                Case 1
                    Buchstaben = ObjektAlphabet.Alphabet.Eins
                Case 2
                    Buchstaben = ObjektAlphabet.Alphabet.Zwei
                Case 3
                    Buchstaben = ObjektAlphabet.Alphabet.Drei
                Case 4
                    Buchstaben = ObjektAlphabet.Alphabet.Vier
                Case 5
                    Buchstaben = ObjektAlphabet.Alphabet.Fünf
                Case 6
                    Buchstaben = ObjektAlphabet.Alphabet.Sechs
                Case 7
                    Buchstaben = ObjektAlphabet.Alphabet.Sieben
                Case 8
                    Buchstaben = ObjektAlphabet.Alphabet.Acht
                Case 9
                    Buchstaben = ObjektAlphabet.Alphabet.Neun
                Case Else
                    Buchstaben = ObjektAlphabet.Alphabet.Null
            End Select
        ElseIf NichtGefunden = False Then
            If Buchstabe = "/" Then
                Buchstaben = ObjektAlphabet.Alphabet.Schreckstrich
            ElseIf Buchstabe = "%" Then
                Buchstaben = ObjektAlphabet.Alphabet.Prozent
            ElseIf Buchstabe = "ß" Then
                Buchstaben = ObjektAlphabet.Alphabet.S
            ElseIf Buchstabe = "-" Then
                Buchstaben = ObjektAlphabet.Alphabet.Bindestrich
            Else
                If Char.IsLetter(Buchstabe) Then
                    Buchstaben = [Enum].Parse(Buchstaben.GetType, Buchstabe, True)
                Else
                    NichtGefunden = True
                End If
            End If
        End If
        If Char.IsLower(Buchstabe) Then
            With Grafikengine.recBild
                .X = BuchstabenBreite * Buchstaben : .Width = BuchstabenBreite
                .Y = BuchstabenHöhe : .Height = BuchstabenHöhe
            End With
        Else
            With Grafikengine.recBild
                .X = BuchstabenBreite * Buchstaben : .Width = BuchstabenBreite
                .Y = 0 : .Height = BuchstabenHöhe
            End With
        End If
        Grafikengine.ptfPosition = P
        If NichtGefunden = False Then _
        Grafikengine.Sprite.Draw2D(Alphabete(Alphabet), Grafikengine.recBild, Grafikengine.szfScale, Grafikengine.ptfRotCenter, sngrotation, Grafikengine.ptfPosition, intcolor)

    End Sub
    Public Shared Sub DrawString(ByVal Text As String, ByVal Größe As Single, ByVal P As Point, ByVal Alphabet As Integer)
        DrawCharArray(Text.ToCharArray, Größe, P, Alphabet)
    End Sub
    Public Shared Sub DrawCharArray(ByVal Buchstaben As Char(), ByVal Größe As Single, ByVal P As Point, ByVal Alphabet As Integer)
        Dim BuchstabenBreite As Integer = 0
        Select Case Alphabet
            Case 1
                BuchstabenBreite = ObjektAlphabet.BuchstabenBreiteKlein * Größe
            Case 2
                BuchstabenBreite = ObjektAlphabet.BuchstabenBreite * 2 * Größe
            Case Else
                BuchstabenBreite = ObjektAlphabet.BuchstabenBreite * Größe
        End Select
        For I = 0 To Buchstaben.Length - 1
            DrawBuchstabe(Buchstaben(I), Größe, P, Alphabet)
            P.X += BuchstabenBreite
        Next
    End Sub
End Class
